Описание
Добавляет данные из строкового выражения в объект Field
(поле) типа Memo или Long Binary в объекте Recordset.
наборЗаписей ! поле.AppendChunk источник
Параметры
наборЗаписей
Объектная переменная, задающая объект
Recordset, который содержит нужное семейство
Fields.
поле
Объектная переменная, задающая имя объекта
Field, свойство Type которого имеет значение dbMemo
(Memo), dbLongBinary (Long Binary) или
эквивалентное.
источник
Выражение или переменная типа
Variant (подтип String), содержащие данные, которые необходимо
добавить в объект Field, определяемый аргументом поле.
Замечания
Методы AppendChunk и GetChunk применяются для
доступа к фрагментам данных в полях типа Memo или Long
Binary.
Кроме того, эти методы используются для экономии пространства,
отведенного для записи строк при работе с полями Memo и Long
Binary. Некоторые операции (например, копирование) выполняются с применением
временных строк. Если объем памяти ограничен, то экономнее работать не с целыми
полями, а с их фрагментами.
Если при вызове метода AppendChunk текущая
запись не определена, возникает ошибка.
При первом вызове метода
AppendChunk (после вызова метода Edit или AddNew)
содержимое поле заменяется на значение строкового выражения. Добавление
строкового выражения к содержимому поля осуществляется при последующих вызовах
AppendChunk в рамках сеанса редактирования, открытого в одном методе
Edit или AddNew.
В рабочей области ODBCDirect, если
ранее не было изменено поле в текущей записи, вызвать метод AppendChunk в
режиме Edit невозможно (хотя ошибка при этом не возникает).
После
вызова метода AppendChunk для поля в рабочей области ODBCDirect
чтение или запись в это поле с помощью инструкции присвоения невозможны до
выхода из текущей записи и последующего возвращения в нее. Это выполняется с
помощью методов MoveNext и MovePrevious.
Пример
Следующая программа использует методы AppendChunk и
GetChunk для заполнения поля объекта данными из другой записи,
добавляемыми порциями по 32K. В действующем приложении подобная процедура
может использоваться для копирования записи о сотруднике (включая фотографию
сотрудника) из одной таблицы в другую. В данном примере запись просто копируется
в ту же таблицу. Отметим, что все действия с порциями данных выполняются в
рамках одной последовательности AddNew-Update.
Sub AppendChunkX()
Dim dbsNorthwind As Database
Dim rstEmployees As Recordset
Dim rstEmployees2 As Recordset
Set dbsNorthwind = OpenDatabase("Борей.mdb")
' Открывает два набора записей для таблицы "Сотрудники".
Set rstEmployees = dbsNorthwind.OpenRecordset("Сотрудники", dbOpenDynaset)
Set rstEmployees2 = rstEmployees.Clone
' Добавляет новую запись в первый объект Recordset и
' копирует данные из записи во второй объект Recordset.
With rstEmployees
.AddNew
!Имя = rstEmployees2!Имя
!Фамилия = rstEmployees2!Фамилия
CopyLargeField rstEmployees2!Фотография, !Фотография
.Update
' Удаляет новую запись, созданную только для демонстрации.
.Bookmark = .LastModified
.Delete
.Close
End With
rstEmployees2.Close
dbsNorthwind.Close
End Sub
Function CopyLargeField(fldSource As Field, fldDestination As Field)
' Задает размер порции данных в байтах.
Const conChunkSize = 32768
Dim lngOffset As Long
Dim lngTotalSize As Long
Dim strChunk As String
' Копирует фото из одного объекта Recordset в другой
' порциями по 32K, пока не будет скопировано все поле.
lngTotalSize = fldSource.FieldSize
Do While lngOffset < lngTotalSize
strChunk = fldSource.GetChunk(lngOffset, conChunkSize)
fldDestination.AppendChunk strChunk
lngOffset = lngOffset + conChunkSize
Loop
End Function